func findShortestSubArray(nums []int) (ans int) {
	//每个数通过map映射为一个数组，第一个存数量，第二个存首次出现的位置，第三个存最后出现的位置
	mps := make(map[int][]int)
	//遍历数组，建立映射关系
	for i, num := range nums {
		if v, ok := mps[num]; ok {
			v[0]++
			v[2] = i
		} else {
			mps[num] = []int{1, i, len(nums) + 1}
		}
	}
	max := 0
	//遍历map，更新最大值同时更新ans
	for _, mp := range mps {
		if mp[0] > max {
			max = mp[0]
			ans = mp[2] - mp[1] + 1
		} else if mp[0] == max {
			ans = min(ans, mp[2]-mp[1]+1)
		}
	}
	if max == 1 {
		return 1
	}
	return ans
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

